/**
 * @Author: Liu, Yunfeng
 * @DateTime: 2020/5/21 21:18
 * @Description: 「外观数列」是一个整数序列，从数字 1 开始，序列中的每一项都是对前一项的描述
 *                给定一个正整数 n（1 ≤ n ≤ 30），输出外观数列的第 n 项。
 */
public class CountAndSay {
    public static String countAndSay(int n) {
        if(n==1){
            return "1";
        }
        String result = "1";
        for(int i=1;i<n;i++){
            String preString = result;
            StringBuilder sb = new StringBuilder();
            for(int j =0;j<result.length();){
                int count=1;
                while(j+count<preString.length()&&preString.charAt(j)==preString.charAt(j+count)){
                    count++;
                }
                sb=sb.append(String.valueOf(count));
                sb=sb.append(preString.charAt(j));
                j+=count;
            }
            result = sb.toString();
        }
        return result;
    }
    public static void main(String[] args){
        System.out.println(countAndSay(10));
    }
}
/*
* 依次打印
* */